home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2000 November
/
Chip_2000-11_cd2.bin
/
sharewar
/
Slunec
/
app
/
17
/
_SETUP.1
/
Najit projekt obsahujici dokument.pw
< prev
next >
Wrap
Text File
|
2000-08-27
|
5KB
|
147 lines
{*******************************************************}
{ }
{ Programmer's Wizard 2 Pascal Script }
{ Petr Esner, petr.esner@atlas.cz }
{ }
{ NAJIT PROJEKT OBSAHUJICI DOKUMENT.PW }
{ (popis jazyka v souboru SCRIPT.DOC) }
{ }
{*******************************************************}
uses ScriptUtils;
function GetVerStr: string;
var
mMajor, mMinor, mRel: Integer;
Begin
GetVersionEx(mMajor, mMinor, mRel);
result := 'v' + IntToStr(mMajor) + '.' + IntToStr(mMinor) + '.' +
IntToStr(mRel);
end;
function GetValidVerStr: string;
Begin
result := 'v2.0.1'; //pozadovana verze PW
end;
//globalni promenne
var
gFileList, gProjList: Array of string;
gProjIDList, gWrkIDList: Array of Integer;
gArrayLength: Integer; //udrzuje nam aktualni delku seznamu nalezenych polozek
procedure AddFile(aProjName: string; aProjID, aWrkID: Integer; aFileName: string);
Begin
//udelame si trochu mista na nohy
inc(gArrayLength);
SetArrayLength(gFileList, gArrayLength);
SetArrayLength(gProjList, gArrayLength);
SetArrayLength(gProjIDList, gArrayLength);
SetArrayLength(gWrkIDList, gArrayLength);
//pridat nalezenou polozku do seznamu
gFileList[gArrayLength - 1] := aFileName;
gProjList[gArrayLength - 1] := aProjName;
gProjIDList[gArrayLength - 1] := aProjID;
gWrkIDList[gArrayLength - 1] := aWrkID;
end;
procedure RunDialog;
var
mAnswer: Integer;
mList: Array of string;
mIndex: Integer;
Begin
//vytvorime pouzitelny seznam nalezenych polozek
SetArrayLength(mList, gArrayLength);
for mIndex := 0 to gArrayLength - 1 do
mList[mIndex] := '[' + gProjList[mIndex] + '] ' +
ExtractFileName(gFileList[mIndex]);
//zobrazime seznam
mAnswer := ShowListDialog( 'V²sledky', 'Vyberte dokument:', mList);
if mAnswer <> -1 then Begin //neco vybral(a)
if OpenProject(gProjIDList[mAnswer]) then
if OpenWorkspace(gWrkIDList[mAnswer]) then
OpenFile(gFileList[mAnswer]);
end;
end;
//procedure Main;
var
mSearchFor: string; //hledany retezec
mProjIndex, mWrkIndex, mFileIndex: Integer;
mFileCount: Integer;
mWrkName, mWrkDescription: string;
mProjFileName, mProjName, mProjDescription: string;
mFile: string;
Begin
if GetValidVerStr <> GetVerStr then //nespravna verze?
ShowMessage('Upozorn∞nφ: tento skript byl napsßn pro Programmers Wizard ' +
GetValidVerStr + '. Momentßln∞ spuÜt∞nß verze: ' + GetVerStr);
REPEAT
//zeptat se na nazev hledaneho dokumentu
if not (InputQuery('Najφt projekt obsahujφcφ dokument...',
'╚ßst nßzvu hledanΘho dokumentu:', mSearchFor)) then Halt;
//nazev nesmi byt prazdny retezec
if mSearchFor = '' then
ShowMessage('Nelze hledat prßzdn² °et∞zec.');
until mSearchFor <> ''; //a tak porad dokola, dokud jim to nedojde :-)
//nebudeme si trvat na case-sensitivnim hledani, ze ne.
mSearchFor := LowerCase(mSearchFor);
//prohledat vsechny plochy ve vsech projektech na pritomnost hledaneho souboru
//vsechny projekty
for mProjIndex := 0 to GetProjectCount - 1 do Begin
//zjistime jmeno prohledavaneho projektu...
GetProjectInfo(
mProjIndex,
mProjFileName,
mProjName,
mProjDescription
);
//...a zobrazime prubeh operace na stavovem radku
SetStatusBarMessage('Prohledßvß se...' + mProjName);
//vsechny plochy
for mWrkIndex := 0 to GetWorkspaceCountEx(mProjIndex) - 1 do Begin
//potrebujeme zjistit pocet souboru na plose
if GetWorkspaceInfoEx(
mProjIndex,
mWrkIndex,
mWrkName,
mWrkDescription,
mFileCount
) then
//vsechny dokumenty
for mFileIndex := 0 to mFileCount - 1 do Begin
mFile := GetWorkspaceFileEx(mProjIndex, mWrkIndex, mFileIndex);
//bingo?
if Pos(mSearchFor, LowerCase(mFile)) > 0 then
AddFile(mProjName, mProjIndex, mWrkIndex, mFile); //pridat soubor do
//naseho seznamu
end;
end; //for mWrkIndex ...
end; //for mProjIndex ...
//zrusit text na stavovem radku
CancelStatusBarMessage;
if gArrayLength = 0 then //zadna shoda?
ShowMessage('Nebyla nalezena ₧ßdnß shoda.')
else if gArrayLength = 1 then //prave jedna shoda?
Begin
if OpenProject(gProjIDList[0]) then
if OpenWorkspace(gWrkIDList[0]) then
OpenFile(gFileList[0]);
end else //vice shod, to chce seznam
RunDialog;
//no a to staci, no.
end.